gdk_keymap_have_bidi_layouts
gdk_keymap_get_caps_lock_state
gdk_keymap_get_num_lock_state
+gdk_keymap_get_scroll_lock_state
gdk_keymap_get_modifier_state
gdk_keymap_add_virtual_modifiers
gdk_keymap_map_virtual_modifiers
return FALSE;
}
+static gboolean
+gdk_broadway_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ return FALSE;
+}
+
static gboolean
gdk_broadway_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval,
keymap_class->have_bidi_layouts = gdk_broadway_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_broadway_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_broadway_keymap_get_num_lock_state;
+ keymap_class->get_scroll_lock_state = gdk_broadway_keymap_get_scroll_lock_state;
keymap_class->get_entries_for_keyval = gdk_broadway_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_broadway_keymap_get_entries_for_keycode;
keymap_class->lookup_key = gdk_broadway_keymap_lookup_key;
return GDK_KEYMAP_GET_CLASS (keymap)->get_num_lock_state (keymap);
}
+/**
+ * gdk_keymap_get_scroll_lock_state:
+ * @keymap: a #GdkKeymap
+ *
+ * Returns whether the Scroll Lock modifer is locked.
+ *
+ * Returns: %TRUE if Scroll Lock is on
+ *
+ * Since: 3.18
+ */
+gboolean
+gdk_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ g_return_val_if_fail (GDK_IS_KEYMAP (keymap), FALSE);
+
+ return GDK_KEYMAP_GET_CLASS (keymap)->get_scroll_lock_state (keymap);
+}
+
/**
* gdk_keymap_get_modifier_state:
* @keymap: a #GdkKeymap
gboolean gdk_keymap_get_caps_lock_state (GdkKeymap *keymap);
GDK_AVAILABLE_IN_ALL
gboolean gdk_keymap_get_num_lock_state (GdkKeymap *keymap);
+GDK_AVAILABLE_IN_3_18
+gboolean gdk_keymap_get_scroll_lock_state (GdkKeymap *keymap);
GDK_AVAILABLE_IN_3_4
guint gdk_keymap_get_modifier_state (GdkKeymap *keymap);
GDK_AVAILABLE_IN_ALL
gboolean (* have_bidi_layouts) (GdkKeymap *keymap);
gboolean (* get_caps_lock_state) (GdkKeymap *keymap);
gboolean (* get_num_lock_state) (GdkKeymap *keymap);
+ gboolean (* get_scroll_lock_state) (GdkKeymap *keymap);
gboolean (* get_entries_for_keyval) (GdkKeymap *keymap,
guint keyval,
GdkKeymapKey **keys,
return xkb_state_led_name_is_active (GDK_MIR_KEYMAP (keymap)->xkb_state, XKB_LED_NAME_NUM);
}
+static gboolean
+gdk_mir_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ //g_printerr ("gdk_mir_keymap_get_scroll_lock_state\n");
+ return xkb_state_led_name_is_active (GDK_MIR_KEYMAP (keymap)->xkb_state, XKB_LED_NAME_SCROLL);
+}
+
static gboolean
gdk_mir_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval,
keymap_class->have_bidi_layouts = gdk_mir_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_mir_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_mir_keymap_get_num_lock_state;
+ keymap_class->get_scroll_lock_state = gdk_mir_keymap_get_scroll_lock_state;
keymap_class->get_entries_for_keyval = gdk_mir_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_mir_keymap_get_entries_for_keycode;
keymap_class->lookup_key = gdk_mir_keymap_lookup_key;
return FALSE;
}
+static gboolean
+gdk_quartz_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ /* FIXME: Implement this. */
+ return FALSE;
+}
+
static gboolean
gdk_quartz_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval,
keymap_class->have_bidi_layouts = gdk_quartz_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_quartz_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_quartz_keymap_get_num_lock_state;
+ keymap_class->get_scroll_lock_state = gdk_quartz_keymap_get_scroll_lock_state;
keymap_class->get_entries_for_keyval = gdk_quartz_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_quartz_keymap_get_entries_for_keycode;
keymap_class->lookup_key = gdk_quartz_keymap_lookup_key;
XKB_LED_NAME_NUM);
}
+static gboolean
+gdk_wayland_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ return xkb_state_led_name_is_active (GDK_WAYLAND_KEYMAP (keymap)->xkb_state,
+ XKB_LED_NAME_SCROLL);
+}
+
static gboolean
gdk_wayland_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval,
keymap_class->have_bidi_layouts = gdk_wayland_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_wayland_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_wayland_keymap_get_num_lock_state;
+ keymap_class->get_scroll_lock_state = gdk_wayland_keymap_get_scroll_lock_state;
keymap_class->get_entries_for_keyval = gdk_wayland_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_wayland_keymap_get_entries_for_keycode;
keymap_class->lookup_key = gdk_wayland_keymap_lookup_key;
return ((GetKeyState (VK_NUMLOCK) & 1) != 0);
}
+static gboolean
+gdk_win32_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ return ((GetKeyState (VK_SCROLL) & 1) != 0);
+}
+
static gboolean
gdk_win32_keymap_get_entries_for_keyval (GdkKeymap *keymap,
guint keyval,
keymap_class->have_bidi_layouts = gdk_win32_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_win32_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_win32_keymap_get_num_lock_state;
+ keymap_class->get_scroll_lock_state = gdk_win32_keymap_get_scroll_lock_state;
keymap_class->get_entries_for_keyval = gdk_win32_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_win32_keymap_get_entries_for_keycode;
keymap_class->lookup_key = gdk_win32_keymap_lookup_key;
guint lock_keysym;
GdkModifierType group_switch_mask;
GdkModifierType num_lock_mask;
+ GdkModifierType scroll_lock_mask;
GdkModifierType modmap[8];
PangoDirection current_direction;
- guint have_direction : 1;
- guint have_lock_state : 1;
- guint caps_lock_state : 1;
- guint num_lock_state : 1;
+ guint have_direction : 1;
+ guint have_lock_state : 1;
+ guint caps_lock_state : 1;
+ guint num_lock_state : 1;
+ guint scroll_lock_state : 1;
guint modifier_state;
guint current_serial;
keymap->mod_keymap = NULL;
keymap->num_lock_mask = 0;
+ keymap->scroll_lock_mask = 0;
keymap->group_switch_mask = 0;
keymap->lock_keysym = GDK_KEY_Caps_Lock;
keymap->have_direction = FALSE;
if (keymap_x11->num_lock_mask == 0)
keymap_x11->num_lock_mask = XkbKeysymToModifiers (KEYMAP_XDISPLAY (GDK_KEYMAP (keymap_x11)), GDK_KEY_Num_Lock);
+ if (keymap_x11->scroll_lock_mask == 0)
+ keymap_x11->scroll_lock_mask = XkbKeysymToModifiers (KEYMAP_XDISPLAY (GDK_KEYMAP (keymap_x11)), GDK_KEY_Scroll_Lock);
+
+
return keymap_x11->xkb_desc;
}
#endif /* HAVE_XKB */
keymap_x11->lock_keysym = GDK_KEY_VoidSymbol;
keymap_x11->group_switch_mask = 0;
keymap_x11->num_lock_mask = 0;
+ keymap_x11->scroll_lock_mask = 0;
for (i = 0; i < 8; i++)
keymap_x11->modmap[i] = 1 << i;
break;
default:
- /* Find the Mode_Switch and Num_Lock modifiers. */
+ /* Find the Mode_Switch, Num_Lock and Scroll_Lock modifiers. */
for (j = 0; j < keymap_x11->keysyms_per_keycode; j++)
{
if (syms[j] == GDK_KEY_Mode_switch)
/* This modifier is used for Num_Lock */
keymap_x11->num_lock_mask |= mask;
}
+ else if (syms[j] == GDK_KEY_Scroll_Lock)
+ {
+ /* This modifier is used for Scroll_Lock */
+ keymap_x11->scroll_lock_mask |= mask;
+ }
}
break;
}
gboolean have_lock_state;
gboolean caps_lock_state;
gboolean num_lock_state;
+ gboolean scroll_lock_state;
guint modifier_state;
/* ensure keymap_x11->num_lock_mask is initialized */
have_lock_state = keymap_x11->have_lock_state;
caps_lock_state = keymap_x11->caps_lock_state;
num_lock_state = keymap_x11->num_lock_state;
+ scroll_lock_state = keymap_x11->scroll_lock_state;
modifier_state = keymap_x11->modifier_state;
keymap_x11->have_lock_state = TRUE;
keymap_x11->caps_lock_state = (locked_mods & GDK_LOCK_MASK) != 0;
keymap_x11->num_lock_state = (locked_mods & keymap_x11->num_lock_mask) != 0;
+ keymap_x11->scroll_lock_state = (locked_mods & keymap_x11->scroll_lock_mask) != 0;
/* FIXME: sanitize this */
keymap_x11->modifier_state = (guint)effective_mods;
return !have_lock_state
|| (caps_lock_state != keymap_x11->caps_lock_state)
|| (num_lock_state != keymap_x11->num_lock_state)
+ || (scroll_lock_state != keymap_x11->scroll_lock_state)
|| (modifier_state != keymap_x11->modifier_state);
}
return keymap_x11->num_lock_state;
}
+static gboolean
+gdk_x11_keymap_get_scroll_lock_state (GdkKeymap *keymap)
+{
+ GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (keymap);
+
+ ensure_lock_state (keymap);
+
+ return keymap_x11->scroll_lock_state;
+}
+
static guint
gdk_x11_keymap_get_modifier_state (GdkKeymap *keymap)
{
keymap_class->have_bidi_layouts = gdk_x11_keymap_have_bidi_layouts;
keymap_class->get_caps_lock_state = gdk_x11_keymap_get_caps_lock_state;
keymap_class->get_num_lock_state = gdk_x11_keymap_get_num_lock_state;
+ keymap_class->get_scroll_lock_state = gdk_x11_keymap_get_scroll_lock_state;
keymap_class->get_modifier_state = gdk_x11_keymap_get_modifier_state;
keymap_class->get_entries_for_keyval = gdk_x11_keymap_get_entries_for_keyval;
keymap_class->get_entries_for_keycode = gdk_x11_keymap_get_entries_for_keycode;